package com.wang.users.pojo;

import com.wang.common.pojo.BasePojo;
import lombok.Data;

import java.util.Date;
import java.util.Map;
import java.util.TreeMap;

/**
 * 管理员的实体类
 *
 * @author wangshMac
 */
@Data
public class AQuesDetail extends BasePojo<AQuesDetail> {
    private int id;
    private int usersId;
    private int quesId;
    private String name;
    private String content;
    private String filePath;
    private byte auditStatus;
    private byte status;
    private Date createTime;
    private Date updateTime;
    private Date pubTime;
    private Date auditTime;

    private AUsers users;
    private AQuesDesc ques;
    /**
     * 字符串表示
     */
    private String statusStr;
    private String auditStatusStr;
    /**
     * 存储所有状态的容器
     */
    private Map<String, String> enumsMap = new TreeMap<String, String>();

    /**
     * 获取此表相关的所有枚举值
     *
     * @return 键为枚举的变量名+枚举的值; 值为枚举的名字 如:key:STATUS_ENABLE-1,值:启用
     */
    public Map<String, String> getEnumsMap() {
        // 根据状态值获取字符串描述
        AQuesDetailEnum[] enums = AQuesDetailEnum.values();
        for (int i = 0; i < enums.length; i++) {
            AQuesDetailEnum enumTemp = enums[i];
            String key = enumTemp.toString();
            enumsMap.put(key + "-" + enumTemp.getStatus() + "", enumTemp.getName());
        }
        return enumsMap;
    }

    /**
     * 获取状态的字符串描述
     *
     * @return 此状态对应的字符串描述
     */
    public String getStatusStr() {
        // 根据状态值获取字符串描述
        AQuesDetailEnum[] enums = AQuesDetailEnum.values();
        for (int i = 0; i < enums.length; i++) {
            AQuesDetailEnum enumTemp = enums[i];
            if (enumTemp.toString().startsWith("STATUS_")) {
                // 表示是状态的标识
                if (enumTemp.getStatus() == this.getStatus()) {
                    this.statusStr = enumTemp.getName();
                    break;
                }
            }
        }
        return statusStr;
    }

    /**
     * 获取状态的字符串描述
     *
     * @return 此状态对应的字符串描述
     */
    public String getAuditStatusStr() {
        // 根据状态值获取字符串描述
        AQuesDetailEnum[] enums = AQuesDetailEnum.values();
        for (int i = 0; i < enums.length; i++) {
            AQuesDetailEnum enumTemp = enums[i];
            if (enumTemp.toString().startsWith("AUDITSTATUS_")) {
                // 表示是状态的标识
                if (enumTemp.getStatus() == this.getAuditStatus()) {
                    this.auditStatusStr = enumTemp.getName();
                    break;
                }
            }
        }
        return auditStatusStr;
    }
}